# Base Line app
# 软件杯项目基准线
# 使用cpca包
import time
import json
import cpca
import pandas as pd

from util.GetMessage import get_message
from util.Timer import timer
from util.Tojson import to_json

PATHDIR = {'file_path': './file/'}



@timer
def many_times_processing(fileName: str):
    """
    :param fileName:存放待查询地址csv的文件名
    :return: 无返回，保存一个存放待查询地址csv的文件名 + su.csv 文件
    :time :2021年4月29日
    :author：高进秋
    """
    address_sum = []
    ansAddrSum = []
    address_dic = get_message("基础字段字典项")

    df = pd.read_csv(PATHDIR['file_path'] + fileName + '.csv', usecols=[0])
    for i in df.values:
        if str(i[0]) == "nan":  # 空值不处理
            continue
        address_sum.append(str(i[0]))  # 存储所有的非空值，作为一个列与处理好的dataframe对应起来并保存

    cur = cpca.transform(address_sum)
    print(cur)
    # for i in cur.values:
    #     strLen = 0  # 定义街道匹配词的长度，随遍历更新
    #     ansAddr = ""
    #     for j in address_dic.values:
    #         if j[0] in i[3] and len(j[0]) > strLen:  # 如果当前匹配到的信息比之前的长，则我们认为它更加匹配
    #             ansAddr = j[0]
    #
    #     ansAddrSum.append(ansAddr)
    #     i[3] = i[3].strip(ansAddr)  # 进行替换处理，已经找到了词，将其删除出地址。至此，i[3]只剩下楼号信息
    #
    # cur.insert(0, '原地址', address_sum) # 插入到第一列前
    # cur.insert(4, '街路巷中文', ansAddrSum)
    # #
    # cur.to_csv(PATHDIR['file_path'] + fileName + "sc.csv",
    #            index=False,
    #            sep=',',
    #            encoding='utf_8_sig')
    #


@timer
def once_processing(words: str):
    """
    :param words: 待处理地址,支持多个地址同时解析(必须使用半角逗号,隔开)
    :return: json字符串
    :time :2021年4月29日
    :author：高进秋
    """
    address_sum = []
    address_dic = get_message("基础字段字典项")

    words = words.split(',')
    for i in words:
        address_sum.append(i)

    cur = cpca.transform(address_sum)
    for i in cur.values:
        strLen = 0  # 定义街道匹配词的长度，随遍历更新
        ansAddr = ""
        for j in address_dic.values:
            if j[0] in i[3] and len(j[0]) > strLen:  # 如果当前匹配到的信息比之前的长，则我们认为它更加匹配
                ansAddr = j[0]

        i[3] = i[3].strip(ansAddr)  # 进行替换处理，已经找到了词，将其删除出地址。至此，i[3]只剩下楼号信息

        cur.insert(0, '原地址', address_sum)
        cur.insert(4, '街路巷中文', ansAddr)
    ret = to_json(cur)  # 调用自己写的方法,转换为json


    return ret


if __name__ == "__main__":
    many_times_processing('标准地址结构化数据样例')
    # text = once_processing('江苏南京市玄武区墨香路30号墨香山庄10幢')
    # print(text)


